﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using ActionService.Messages;
using ActionService.DataTransferObjects;

namespace ActionService.ServiceContracts
{
    [ServiceContract(SessionMode = SessionMode.Required)]
    public interface IActionService
    {
        [OperationContract]
        TokenResponse GetToken(TokenRequest request);

        [OperationContract]
        LoginResponse Login(LoginRequest request);

        [OperationContract]
        LogoutResponse Logout(LogoutRequest request);

        [OperationContract]
        RestaurantResponse GetRestaurants(RestaurantRequest request);

        [OperationContract]
        RestaurantResponse SetRestaurants(RestaurantRequest request);

        [OperationContract]
        AccountingObjectCategoryResponse GetAccountingObjectCategories(AccountingObjectCategoryRequest request);

        [OperationContract]
        AccountingObjectCategoryResponse SetAccountingObjectCategories(AccountingObjectCategoryRequest request);

        [OperationContract]
        UserGroupResponse GetUserGroups(UserGroupRequest request);

        [OperationContract]
        UserGroupResponse SetUserGroups(UserGroupRequest request);

        [OperationContract]
        CountryRegionResponse GetCountryRegions(CountryRegionRequest request);

        [OperationContract]
        CountryRegionResponse SetCountryRegions(CountryRegionRequest request);

        [OperationContract]
        DistrictResponse GetDistricts(DistrictRequest request);

        [OperationContract]
        DistrictResponse SetDistricts(DistrictRequest request);

        [OperationContract]
        ProvinceResponse GetProvinces(ProvinceRequest request);

        [OperationContract]
        ProvinceResponse SetProvinces(ProvinceRequest request);

        [OperationContract]
        AccountingObjectResponse GetAccountingObjects(AccountingObjectRequest request);

        [OperationContract]
        AccountingObjectResponse SetAccountingObjects(AccountingObjectRequest request);

        [OperationContract]
        InventoryItemCategoryResponse GetInventoryItemCategories(InventoryItemCategoryRequest request);

        [OperationContract]
        InventoryItemCategoryResponse SetInventoryItemCategories(InventoryItemCategoryRequest request);

        [OperationContract]
        StockResponse GetStocks(StockRequest request);

        [OperationContract]
        StockResponse SetStocks(StockRequest request);

        [OperationContract]
        UnitsResponse GetUnits(UnitsRequest request);

        [OperationContract]
        UnitsResponse SetUnits(UnitsRequest request);

        [OperationContract]
        InventoryItemResponse GetInventoryItems(InventoryItemRequest request);

        [OperationContract]
        InventoryItemResponse SetInventoryItems(InventoryItemRequest request);

        [OperationContract]
        RestaurantAreaResponse GetRestaurantAreas(RestaurantAreaRequest request);

        [OperationContract]
        RestaurantAreaResponse SetRestaurantAreas(RestaurantAreaRequest request);

        [OperationContract]
        RestaurantTableResponse GetRestaurantTables(RestaurantTableRequest request);

        [OperationContract]
        RestaurantTableResponse SetRestaurantTables(RestaurantTableRequest request);

        [OperationContract]
        RestaurantMenuCategoryResponse GetRestaurantMenuCategories(RestaurantMenuCategoryRequest request);

        [OperationContract]
        RestaurantMenuCategoryResponse SetRestaurantMenuCategories(RestaurantMenuCategoryRequest request);

        [OperationContract]
        RestaurantMenuResponse GetRestaurantMenus(RestaurantMenuRequest request);

        [OperationContract]
        RestaurantMenuResponse SetRestaurantMenus(RestaurantMenuRequest request);

        [OperationContract]
        RestaurantMenuNormResponse GetRestaurantMenuNorms(RestaurantMenuNormRequest request);

        [OperationContract]
        RestaurantMenuNormResponse SetRestaurantMenuNorms(RestaurantMenuNormRequest request);

        [OperationContract]
        CurrencyResponse GetCurrencies(CurrencyRequest request);

        [OperationContract]
        CurrencyResponse SetCurrencies(CurrencyRequest request);

        [OperationContract]
        DepartmentResponse GetDepartments(DepartmentRequest request);

        [OperationContract]
        DepartmentResponse SetDepartments(DepartmentRequest request);

        [OperationContract]
        TimeSheetSignResponse GetTimeSheetSigns(TimeSheetSignRequest request);

        [OperationContract]
        TimeSheetSignResponse SetTimeSheetSigns(TimeSheetSignRequest request);

        [OperationContract]
        ShipMethodResponse GetShipMethods(ShipMethodRequest request);

        [OperationContract]
        ShipMethodResponse SetShipMethods(ShipMethodRequest request);

        [OperationContract]
        AutoIDResponse GetAutoIDs(AutoIDRequest request);

        [OperationContract]
        AutoIDResponse SetAutoIDs(AutoIDRequest request);

        [OperationContract]
        InwardOutwardResponse GetInwardOutwards(InwardOutwardRequest request);

        [OperationContract]
        InwardOutwardResponse SetInwardOutwards(InwardOutwardRequest request);

        [OperationContract]
        RestaurantMenuNormDetailResponse GetRestaurantMenuNormDetails(RestaurantMenuNormDetailRequest request);
    }
}